فهرست منبع

Merge branch '海盐站点特殊定制字段' into dev

xiaohaizhao 2 سال پیش
والد
کامیت
a470f36747

+ 181 - 178
components/Yl_field/index.wxml

@@ -1,191 +1,194 @@
 <view wx:for="{{form}}" wx:key="valueName" data-name="{{item.valueName}}">
-    <view hidden="{{ !item.required && !showAll }}">
-        <!-- <van-transition show="{{ item.required || showAll }}" name="fade" custom-class="block"> -->
-        <!-- 单列选择器 -->
-        <view class="picker" wx:if="{{item.type=='selector'}}">
-            <view class="label">
-                <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
-                <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
-            </view>
-            <view style="position: relative;">
-                <view class="picker-slot" wx:if="{{item.slot}}">
-                    <slot name="{{item.slot}}" />
-                </view>
-                <picker mode='selector' range="{{item.range}}" range-key='{{item.rangeKey}}' value="{{item.rangeIndex}}" disabled="{{item.disabled}}" data-item="{{item}}" data-index="{{index}}" bindchange="bindSelectorChange">
-                    <view class="content">
-                        <text wx:if="{{item.value}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value}}</text>
-                        <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder}}</text>
-                    </view>
-                </picker>
-                <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
-            </view>
+  <view hidden="{{ !item.required && !showAll }}">
+    <!-- <van-transition show="{{ item.required || showAll }}" name="fade" custom-class="block"> -->
+    <!-- 单列选择器 -->
+    <view class="picker" wx:if="{{item.type=='selector'}}">
+      <view class="label">
+        <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
+        <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
+      </view>
+      <view style="position: relative;">
+        <view class="picker-slot" wx:if="{{item.slot}}">
+          <slot name="{{item.slot}}" />
         </view>
-        <!-- 日期选择器 -->
-        <view class="picker" wx:elif="{{item.type=='date'}}">
-            <view class="label">
-                <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
-                <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
-            </view>
-            <view style="position: relative;">
-                <view class="picker-slot" wx:if="{{item.slot}}">
-                    <slot name="{{item.slot}}" />
-                </view>
-                <picker mode='date' value="{{item.value}}" disabled="{{item.disabled}}" fields='{{item.fields||"day"}}' start="{{item.start}}" end="{{item.end}}" data-item="{{item}}" bindchange="bindDateChange">
-                    <view class="content">
-                        <text wx:if="{{item.value}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value}}</text>
-                        <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder}}</text>
-                    </view>
-                </picker>
-                <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
-            </view>
+        <picker mode='selector' range="{{item.range}}" range-key='{{item.rangeKey}}' value="{{item.rangeIndex}}" disabled="{{item.disabled}}" data-item="{{item}}" data-index="{{index}}" bindchange="bindSelectorChange">
+          <view class="content">
+            <text wx:if="{{item.value}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value}}</text>
+            <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder}}</text>
+          </view>
+        </picker>
+        <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
+      </view>
+    </view>
+    <!-- 日期选择器 -->
+    <view class="picker" wx:elif="{{item.type=='date'}}">
+      <view class="label">
+        <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
+        <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
+      </view>
+      <view style="position: relative;">
+        <view class="picker-slot" wx:if="{{item.slot}}">
+          <slot name="{{item.slot}}" />
         </view>
-        <!-- 日期范围选择器 -->
-        <view class="picker" wx:elif="{{item.type=='dateRange'}}">
-            <view class="label">
-                <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
-                <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
-            </view>
-            <view style="position: relative;">
-                <view class="picker-slot" wx:if="{{item.slot}}">
-                    <slot name="{{item.slot}}" />
-                </view>
-                <view class="content" style="display: flex;">
-                    <picker mode='date' value="{{item.value[0]}}" disabled="{{item.disabled}}" fields='{{item.fields||"day"}}' start="{{item.start}}" end="{{item.end}}" data-item="{{item}}" data-index="0" bindchange="rangeDateChange">
-                        <text wx:if="{{item.value[0]}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value[0]}}</text>
-                        <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder[0]}}</text>
-                    </picker>
-                    <view style="margin: 0 20rpx;color: #000;">至</view>
-                    <picker mode='date' value="{{item.value[1]}}" disabled="{{item.disabled}}" fields='{{item.fields||"day"}}' start="{{item.value[0]}}" end="{{item.end}}" data-item="{{item}}" data-index="1" bindchange="rangeDateChange">
-                        <text wx:if="{{item.value[1]}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value[1]}}</text>
-                        <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder[1]}}</text>
-                    </picker>
-                </view>
-                <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
-            </view>
+        <picker mode='date' value="{{item.value}}" disabled="{{item.disabled}}" fields='{{item.fields||"day"}}' start="{{item.start}}" end="{{item.end}}" data-item="{{item}}" bindchange="bindDateChange">
+          <view class="content">
+            <text wx:if="{{item.value}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value}}</text>
+            <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder}}</text>
+          </view>
+        </picker>
+        <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
+      </view>
+    </view>
+    <!-- 日期范围选择器 -->
+    <view class="picker" wx:elif="{{item.type=='dateRange'}}">
+      <view class="label">
+        <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
+        <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
+      </view>
+      <view style="position: relative;">
+        <view class="picker-slot" wx:if="{{item.slot}}">
+          <slot name="{{item.slot}}" />
         </view>
-        <!-- 时间选择器 -->
-        <view class="picker" wx:elif="{{item.type=='time'}}">
-            <view class="label">
-                <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
-                <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
-            </view>
-            <view style="position: relative;">
-                <view class="picker-slot" wx:if="{{item.slot}}">
-                    <slot name="{{item.slot}}" />
-                </view>
-                <picker mode='time' value="{{item.value}}" disabled="{{item.disabled}}" fields='{{item.fields}}' start="{{item.start}}" end="{{item.end}}" data-item="{{item}}" bindchange="bindDateChange">
-                    <view class="content">
-                        <text wx:if="{{item.value}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value}}</text>
-                        <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder}}</text>
-                    </view>
-                </picker>
-                <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
-            </view>
+        <view class="content" style="display: flex;">
+          <picker mode='date' value="{{item.value[0]}}" disabled="{{item.disabled}}" fields='{{item.fields||"day"}}' start="{{item.start}}" end="{{item.end}}" data-item="{{item}}" data-index="0" bindchange="rangeDateChange">
+            <text wx:if="{{item.value[0]}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value[0]}}</text>
+            <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder[0]}}</text>
+          </picker>
+          <view style="margin: 0 20rpx;color: #000;">至</view>
+          <picker mode='date' value="{{item.value[1]}}" disabled="{{item.disabled}}" fields='{{item.fields||"day"}}' start="{{item.value[0]}}" end="{{item.end}}" data-item="{{item}}" data-index="1" bindchange="rangeDateChange">
+            <text wx:if="{{item.value[1]}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value[1]}}</text>
+            <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder[1]}}</text>
+          </picker>
         </view>
-        <!-- 省市县选择器 -->
-        <view class="picker" wx:elif="{{item.type=='region'}}">
-            <view class="label">
-                <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
-                <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
-            </view>
-            <view style="position: relative;">
-                <view class="picker-slot" wx:if="{{item.slot}}">
-                    <slot name="{{item.slot}}" />
-                </view>
-                <picker mode='region' value="{{item.value}}" disabled="{{item.disabled}}" data-item="{{item}}" bindchange="bindRegionChange">
-                    <view class="content">
-                        <text wx:if="{{item.value.length}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value}}</text>
-                        <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder}}</text>
-                    </view>
-                </picker>
-                <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
-            </view>
+        <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
+      </view>
+    </view>
+    <!-- 时间选择器 -->
+    <view class="picker" wx:elif="{{item.type=='time'}}">
+      <view class="label">
+        <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
+        <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
+      </view>
+      <view style="position: relative;">
+        <view class="picker-slot" wx:if="{{item.slot}}">
+          <slot name="{{item.slot}}" />
         </view>
-        <!-- 性别 -->
-        <view class="picker" wx:elif="{{item.type=='sex'}}">
-            <view class="label">
-                <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
-                <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
-            </view>
-            <view style="position: relative;">
-                <view class="content">
-                    <van-radio-group value="{{ item.value }}" data-item="{{item}}" bind:change="sexChange">
-                        <view style="display: flex;">
-                            <van-radio icon-size='16' custom-class='radio' name="男">男</van-radio>
-                            <van-radio icon-size='16' name="女">女</van-radio>
-                        </view>
-                    </van-radio-group>
-                </view>
-                <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
-            </view>
+        <picker mode='time' value="{{item.value}}" disabled="{{item.disabled}}" fields='{{item.fields}}' start="{{item.start}}" end="{{item.end}}" data-item="{{item}}" bindchange="bindDateChange">
+          <view class="content">
+            <text wx:if="{{item.value}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value}}</text>
+            <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder}}</text>
+          </view>
+        </picker>
+        <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
+      </view>
+    </view>
+    <!-- 省市县选择器 -->
+    <view class="picker" wx:elif="{{item.type=='region'}}">
+      <view class="label">
+        <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
+        <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
+      </view>
+      <view style="position: relative;">
+        <view class="picker-slot" wx:if="{{item.slot}}">
+          <slot name="{{item.slot}}" />
         </view>
-        <!-- 单选 选择器 -->
-        <view class="picker" wx:elif="{{item.type=='radio'}}">
-            <view class="label">
-                <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
-                <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
-            </view>
-            <view style="position: relative;">
-                <view class="content">
-                    <van-radio-group direction='{{item.direction||"vertical"}}' value="{{ item.value }}" data-item="{{item}}" bind:change="radioChange">
-                        <van-radio wx:for="{{item.radioList}}" wx:for-item="it" wx:for-index="i" wx:key="name" icon-size="16" custom-class="radio {{i != 0&&item.direction!='horizontal' ? 'radio_margin_top' : '' }}" name="{{it.id}}">{{it.name}}</van-radio>
-                    </van-radio-group>
-                </view>
-                <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
-            </view>
+        <picker mode='region' value="{{item.value}}" disabled="{{item.disabled}}" data-item="{{item}}" bindchange="bindRegionChange">
+          <view class="content">
+            <text wx:if="{{item.value.length}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value}}</text>
+            <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder}}</text>
+          </view>
+        </picker>
+        <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
+      </view>
+    </view>
+    <!-- 性别 -->
+    <view class="picker" wx:elif="{{item.type=='sex'}}">
+      <view class="label">
+        <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
+        <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
+      </view>
+      <view style="position: relative;">
+        <view class="content">
+          <van-radio-group value="{{ item.value }}" data-item="{{item}}" bind:change="sexChange">
+            <view style="display: flex;">
+              <van-radio icon-size='16' custom-class='radio' name="男">男</van-radio>
+              <van-radio icon-size='16' name="女">女</van-radio>
+            </view>
+          </van-radio-group>
         </view>
-        <!-- 异步类型选择 -->
-        <view class="picker" wx:elif="{{item.type=='option'}}">
-            <view class="label">
-                <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
-                <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
-            </view>
-            <view style="position: relative;">
-                <view class="content" style="justify-content: space-between; display: flex; align-items: flex-start;" data-item="{{item}}" bindtap="toOptions">
-                    <text wx:if="{{item.value.length}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value}}</text>
-                    <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder}}</text>
-                    <van-icon name="arrow" style="flex-shrink: 0; margin-top: 12rpx;" />
-                </view>
-                <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
-            </view>
+        <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
+      </view>
+    </view>
+    <!-- 单选 选择器 -->
+    <view class="picker" wx:elif="{{item.type=='radio'}}">
+      <view class="label">
+        <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
+        <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
+      </view>
+      <view style="position: relative;">
+        <view class="content">
+          <van-radio-group direction='{{item.direction||"vertical"}}' value="{{ item.value }}" data-item="{{item}}" disabled="{{item.disabled||false}}" bind:change="radioChange">
+            <van-radio wx:for="{{item.radioList}}" wx:for-item="it" wx:for-index="i" wx:key="name" icon-size="16" custom-class="radio {{i != 0&&item.direction!='horizontal' ? 'radio_margin_top' : '' }}" name="{{it.id}}">{{it.name}}</van-radio>
+          </van-radio-group>
         </view>
-        <!-- 跳转路由选择 值使用数组,0保存显示名称,1保存ID -->
-        <view class="picker" wx:elif="{{item.type=='route'}}">
-            <view class="label">
-                <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
-                <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
-            </view>
-            <view style="position: relative;">
-                <view class="content" style="justify-content: space-between; display: flex; align-items: flex-start;" data-item="{{item}}" bindtap="route">
-                    <text wx:if="{{item.value.length}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value[0]}}</text>
-                    <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder}}</text>
-                    <van-icon name="arrow" style="flex-shrink: 0; margin-top: 12rpx;" />
-                </view>
-                <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
-            </view>
+        <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
+      </view>
+    </view>
+    <!-- 异步类型选择 -->
+    <view class="picker" wx:elif="{{item.type=='option'}}">
+      <view class="label">
+        <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
+        <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
+      </view>
+      <view style="position: relative;">
+        <view class="content" style="justify-content: space-between; display: flex; align-items: flex-start;" data-item="{{item}}" bindtap="toOptions">
+          <text wx:if="{{item.value.length}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};">{{item.value}}</text>
+          <text wx:else style="color: {{item.error?'#EE4C4E':''}};">{{item.placeholder}}</text>
+          <van-icon name="arrow" style="flex-shrink: 0; margin-top: 12rpx;" />
         </view>
-        <!-- 固定电话输入 -->
-        <view class="picker" wx:elif="{{item.type=='telephone'}}">
-            <view class="label">
-                <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
-                <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
-            </view>
-            <view style="position: relative;">
-                <view class="content telephone">
-                    <input class="area-code" placeholder-class='telephone-p' data-item="{{item}}" data-i="0" bindinput="inputChange" type="number" value="{{item.value[0]}}" maxlength='4' placeholder="区号" /><text>-</text><input class="phone" placeholder-class='telephone-p' data-item="{{item}}" data-i="1" bindinput="inputChange" type="number" value="{{item.value[1]}}" maxlength='8' placeholder="号码" />
-                </view>
-                <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
-            </view>
+        <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
+      </view>
+    </view>
+    <!-- 跳转路由选择 值使用数组,0保存显示名称,1保存ID -->
+    <view class="picker" wx:elif="{{item.type=='route'}}">
+      <view class="label">
+        <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
+        <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
+      </view>
+      <view style="position: relative;">
+        <view class="content" style="justify-content: space-between; display: flex; align-items: flex-start;" data-item="{{item}}" bindtap="route">
+          <text wx:if="{{item.value.length}}" style="color:{{item.disabled?'#C8C9CC':'#000'}};flex: 1;">{{item.value[0]}}</text>
+          <text wx:else style="color: {{item.error?'#EE4C4E':''}};flex: 1;">{{item.placeholder}}</text>
+          <view wx:if="{{item.slot}}">
+            <slot name="{{item.slot}}" />
+          </view>
+          <van-icon name="arrow" style="flex-shrink: 0; margin-top: 12rpx;" />
         </view>
-        <!-- 输入框 -->
-        <van-field wx:else label="{{item.label}}" required="{{item.required}}" value="{{ item.value }}" placeholder="{{item.placeholder||'请填写'}}" label-class='label-class' type="{{item.type}}" error="{{item.error}}" error-message='{{item.errMsg}}' disabled="{{item.disabled}}" autosize border="{{ false }}" bind:input="inputChange" bind:blur='onBlur' data-item="{{item}}">
-            <view slot='button' style="display: flex;">
-                <view wx:if="{{item.slot}}" style="margin-right: 8rpx;">
-                    <slot name="{{item.slot}}" />
-                </view>
-                <Yl_VoiceInput wx:if="{{item.type=='text'||item.type=='textarea'}}" data-index="{{index}}" bindcallback="onVoiceInput" />
-            </view>
-        </van-field>
+        <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
+      </view>
+    </view>
+    <!-- 固定电话输入 -->
+    <view class="picker" wx:elif="{{item.type=='telephone'}}">
+      <view class="label">
+        <text class="need" style="color: {{item.required?'#EE0A24':'rgba(0,0,0,0)'}};">*</text>
+        <text class="text" style="color:{{item.disabled?'#C8C9CC':''}};">{{item.label}}</text>
+      </view>
+      <view style="position: relative;">
+        <view class="content telephone">
+          <input class="area-code" placeholder-class='telephone-p' data-item="{{item}}" data-i="0" bindinput="inputChange" type="number" value="{{item.value[0]}}" maxlength='4' placeholder="区号" /><text>-</text><input class="phone" placeholder-class='telephone-p' data-item="{{item}}" data-i="1" bindinput="inputChange" type="number" value="{{item.value[1]}}" maxlength='8' placeholder="号码" />
+        </view>
+        <view wx:if="{{item.errMsg}}" class="error-tips">{{item.errMsg}}</view>
+      </view>
     </view>
-    <!-- </van-transition> -->
+    <!-- 输入框 -->
+    <van-field wx:else label="{{item.label}}" required="{{item.required}}" value="{{ item.value }}" placeholder="{{item.placeholder||'请填写'}}" label-class='label-class' type="{{item.type}}" error="{{item.error}}" error-message='{{item.errMsg}}' disabled="{{item.disabled}}" autosize border="{{ false }}" bind:input="inputChange" bind:blur='onBlur' data-item="{{item}}">
+      <view slot='button' style="display: flex;">
+        <view wx:if="{{item.slot}}" style="margin-right: 8rpx;">
+          <slot name="{{item.slot}}" />
+        </view>
+        <Yl_VoiceInput wx:if="{{item.type=='text'||item.type=='textarea'}}" data-index="{{index}}" bindcallback="onVoiceInput" />
+      </view>
+    </van-field>
+  </view>
+  <!-- </van-transition> -->
 </view>

+ 11 - 0
packageA/project/addAndEdit.js

@@ -214,6 +214,7 @@ Page({
         countDown: "", //查重倒计时
     },
     onLoad(options) {
+        if (wx.getStorageSync('userMsg').siteid == 'HY') this.setHY();
         if (options.data) {
             let data = JSON.parse(options.data);
             let disabled = options.disabled == "true";
@@ -238,6 +239,16 @@ Page({
             this.getUnitname();
         }
     },
+    setHY() {
+        let required = ["预计签约时间", "项目等级", "详细地址", "项目规模"],
+            remove = ["项目预算(万元)", "总投资额(万元)", "造价(万元)"];
+        this.setData({
+            form: this.data.form.filter(v => !remove.includes(v.label)).map(v => {
+                if (required.includes(v.label)) v.required = true;
+                return v
+            })
+        })
+    },
     async interrupt(e) {
         let {
             data,

+ 72 - 75
packageA/project/detail.js

@@ -114,6 +114,77 @@ Page({
     },
     /* 设置显示信息 */
     async setPreview(data) {
+        let list1 = [{
+            label: "项目编号",
+            value: data.projectnum
+        }, {
+            label: "项目名称",
+            value: data.projectname
+        }, {
+            label: "项目类型",
+            value: data.projecttype
+        }, {
+            label: "项目阶段",
+            value: data.stagename
+        }, {
+            label: "项目方阶段",
+            value: data.squarestage
+        }, {
+            label: "项目等级",
+            value: data.grade
+        }, {
+            label: "省市县",
+            value: data.province ? data.province + data.city + data.county : ''
+        }, {
+            label: "地址",
+            value: data.address
+        }, {
+            label: "项目规模",
+            value: data.scale ? data.scale + data.unitname : ""
+        }, {
+            label: "项目预算(万元)",
+            value: CNY(data.budgetary)
+        }, {
+            label: "总投资额(万元)",
+            value: CNY(data.totalinvestment)
+        }, {
+            label: "造价(万元)",
+            value: CNY(data.costofconstruction)
+        }, {
+            label: "预计开工时间",
+            value: data.begdate_due
+        }, {
+            label: "预计完工时间",
+            value: data.enddate_due
+        }, {
+            label: "预计签约时间",
+            value: data.signdate_due
+        }, {
+            label: "预计签约金额(元)",
+            value: CNY(data.signamount_due)
+        }, {
+            label: "项目成交金额",
+            value: CNY(data.dealamount)
+        }, {
+            label: "领域",
+            value: data.tradefield
+        }, {
+            label: "品牌",
+            value: data.brandname
+        }, {
+            label: "品牌是否填报方植入",
+            value: data.isfillbrangd == 1 ? '是' : (data.isfillbrangd + "").length == 0 ? '' : "否"
+        }, {
+            label: "赢率",
+            value: data.winrate
+        }, {
+            label: "项目状态",
+            value: data.status
+        }, {
+            label: "负责人",
+            value: data.name
+        }];
+        if (wx.getStorageSync('userMsg').siteid == 'HY') list1 = list1.filter(v => !["项目预算(万元)", "总投资额(万元)", "造价(万元)"].includes(v.label))
         this.setData({
             briefs: [{
                 label: "项目编号",
@@ -131,81 +202,7 @@ Page({
                 label: "状态",
                 value: data.status
             }],
-            list1: [{
-                    label: "项目编号",
-                    value: data.projectnum
-                }, {
-                    label: "项目名称",
-                    value: data.projectname
-                }, {
-                    label: "项目类型",
-                    value: data.projecttype
-                }, {
-                    label: "项目阶段",
-                    value: data.stagename
-                }, {
-                    label: "项目方阶段",
-                    value: data.squarestage
-                }, {
-                    label: "项目等级",
-                    value: data.grade
-                }, {
-                    label: "省市县",
-                    value: data.province ? data.province + data.city + data.county : ''
-                }, {
-                    label: "地址",
-                    value: data.address
-                }, {
-                    label: "项目规模",
-                    value: data.scale ? data.scale + data.unitname : ""
-                }, {
-                    label: "项目预算(万元)",
-                    value: CNY(data.budgetary)
-                },
-                {
-                    label: "总投资额(万元)",
-                    value: CNY(data.totalinvestment)
-                },
-                {
-                    label: "造价(万元)",
-                    value: CNY(data.costofconstruction)
-                },
-                {
-                    label: "预计开工时间",
-                    value: data.begdate_due
-                },
-                {
-                    label: "预计完工时间",
-                    value: data.enddate_due
-                }, {
-                    label: "预计签约时间",
-                    value: data.signdate_due
-                }, {
-                    label: "预计签约金额(元)",
-                    value: CNY(data.signamount_due)
-                }, {
-                    label: "项目成交金额",
-                    value: CNY(data.dealamount)
-                }, {
-                    label: "领域",
-                    value: data.tradefield
-                }, {
-                    label: "品牌",
-                    value: data.brandname
-                }, {
-                    label: "品牌是否填报方植入",
-                    value: data.isfillbrangd == 1 ? '是' : (data.isfillbrangd + "").length == 0 ? '' : "否"
-                }, {
-                    label: "赢率",
-                    value: data.winrate
-                }, {
-                    label: "项目状态",
-                    value: data.status
-                }, {
-                    label: "负责人",
-                    value: data.name
-                }
-            ],
+            list1,
             list2: [{
                 label: "创建人",
                 value: data.createby

+ 7 - 0
packageA/publicClue/addClue.js

@@ -212,6 +212,7 @@ Page({
         disabled: true
     },
     onLoad(options) {
+        if (wx.getStorageSync('userMsg').siteid == 'HY') this.setHY();
         //市场活动进入
         if (options.sat_campaignid) {
             let item = this.data.form.find(item => item.label == '市场活动');
@@ -272,6 +273,12 @@ Page({
             })
         })
     },
+    setHY() {
+        let remove = ["项目预算(万元)", "总投资额(万元)", "造价(万元)"];
+        this.setData({
+            form: this.data.form.filter(v => !remove.includes(v.label))
+        })
+    },
     getUnitname() {
         _Http.basic({
             "classname": "sysmanage.develop.optiontype.optiontype",

+ 79 - 76
packageA/publicClue/detail.js

@@ -57,6 +57,84 @@ Page({
                 title: res.msg,
                 icon: "none"
             });
+            let list1 = [{
+                label: "客户(企业)",
+                value: res.data.enterprisename_customer
+            }, {
+                label: "联系人",
+                value: res.data.name
+            }, {
+                label: "联系角色",
+                value: res.data.contactsrole
+            }, {
+                label: "手机号码",
+                value: res.data.phonenumber
+            }, {
+                label: "微信",
+                value: res.data.wechatnum
+            }, {
+                label: "省市县",
+                value: res.data.province ? res.data.province + res.data.city + res.data.county : ''
+            }, {
+                label: "地址",
+                value: res.data.address
+            }, {
+                label: "项目名称",
+                value: res.data.projectname
+            }, {
+                label: "项目规模",
+                value: res.data.scale ? res.data.scale + res.data.unitname : ""
+            }, {
+                label: "总投资额(万元)",
+                value: res.data.totalinvestment
+            }, {
+                label: "造价(万元)",
+                value: res.data.costofconstruction
+            }, {
+                label: "预计开工时间",
+                value: res.data.begdate_due
+            }, {
+                label: "预计完工时间",
+                value: res.data.enddate_due
+            }, {
+                label: "市场活动",
+                value: res.data.campaign_name
+            }, {
+                label: "领域",
+                value: res.data.tradefield
+            }, {
+                label: "设计院",
+                value: res.data.institute
+            }, {
+                label: "设计师",
+                value: res.data.designer
+            }, {
+                label: "关联项目",
+                value: res.data.projectname1
+            }, {
+                label: "来源",
+                value: res.data.cluesource
+            }, {
+                label: "线索概况",
+                value: res.data.notes
+            }, {
+                label: '所属业务员',
+                value: res.data.salename
+            }, {
+                label: '负责人',
+                value: res.data.leader && res.data.leader.length > 0 ? res.data.leader[0].name : ''
+            }, {
+                label: '上图员',
+                value: res.data.uppictured
+            }, {
+                label: '分配状态',
+                value: res.data.allocationstatus
+            }, {
+                label: '跟进状态',
+                value: res.data.status
+            }];
+            if (wx.getStorageSync('userMsg').siteid == 'HY') list1 = list1.filter(v => !["项目预算(万元)", "总投资额(万元)", "造价(万元)"].includes(v.label))
+
             this.setData({
                 isLeader: res.data.createuserid == wx.getStorageSync('userMsg').userid,
                 detail: res.data,
@@ -89,82 +167,7 @@ Page({
                         value: res.data.followcount || '0'
                     },
                 ],
-                list1: [{
-                    label: "客户(企业)",
-                    value: res.data.enterprisename_customer
-                }, {
-                    label: "联系人",
-                    value: res.data.name
-                }, {
-                    label: "联系角色",
-                    value: res.data.contactsrole
-                }, {
-                    label: "手机号码",
-                    value: res.data.phonenumber
-                }, {
-                    label: "微信",
-                    value: res.data.wechatnum
-                }, {
-                    label: "省市县",
-                    value: res.data.province ? res.data.province + res.data.city + res.data.county : ''
-                }, {
-                    label: "地址",
-                    value: res.data.address
-                }, {
-                    label: "项目名称",
-                    value: res.data.projectname
-                }, {
-                    label: "项目规模",
-                    value: res.data.scale ? res.data.scale + res.data.unitname : ""
-                }, {
-                    label: "总投资额(万元)",
-                    value: res.data.totalinvestment
-                }, {
-                    label: "造价(万元)",
-                    value: res.data.costofconstruction
-                }, {
-                    label: "预计开工时间",
-                    value: res.data.begdate_due
-                }, {
-                    label: "预计完工时间",
-                    value: res.data.enddate_due
-                }, {
-                    label: "市场活动",
-                    value: res.data.campaign_name
-                }, {
-                    label: "领域",
-                    value: res.data.tradefield
-                }, {
-                    label: "设计院",
-                    value: res.data.institute
-                }, {
-                    label: "设计师",
-                    value: res.data.designer
-                }, {
-                    label: "关联项目",
-                    value: res.data.projectname1
-                }, {
-                    label: "来源",
-                    value: res.data.cluesource
-                }, {
-                    label: "线索概况",
-                    value: res.data.notes
-                }, {
-                    label: '所属业务员',
-                    value: res.data.salename
-                }, {
-                    label: '负责人',
-                    value: res.data.leader && res.data.leader.length > 0 ? res.data.leader[0].name : ''
-                }, {
-                    label: '上图员',
-                    value: res.data.uppictured
-                }, {
-                    label: '分配状态',
-                    value: res.data.allocationstatus
-                }, {
-                    label: '跟进状态',
-                    value: res.data.status
-                }],
+                list1,
                 list2: [{
                     label: "创建人",
                     value: res.data.createBy

+ 130 - 84
packageA/saleAdmin/detail.js

@@ -6,6 +6,40 @@ Page({
         sat_orderclueid: "",
         detail: '',
         siteShow: false,
+        deletereasonShow: false,
+        deletereason: "",
+    },
+    onCancel() {
+        this.setData({
+            deletereasonShow: false
+        })
+    },
+    /* 完成情况说明输入 */
+    areaInput(e) {
+        this.setData({
+            [e.currentTarget.dataset.name]: e.detail.value
+        })
+    },
+    deleteItem() {
+        _Http.basic({
+            "id": 20221123193702,
+            "content": {
+                "sat_orderclueids": [this.data.detail.sat_orderclueid],
+                deletereason: this.data.deletereason
+            }
+        }).then(res => {
+            wx.showToast({
+                title: res.msg == '成功' ? `作废成功` : res.msg,
+                icon: "none"
+            });
+            this.onCancel();
+            this.setData({
+                deletereason: ""
+            })
+            setTimeout(() => {
+                wx.navigateBack()
+            }, 500)
+        })
     },
     onLoad(options) {
         const appAuth = wx.getStorageSync('auth').worderclue_admin;
@@ -57,6 +91,83 @@ Page({
                 title: res.msg,
                 icon: "none"
             });
+            let list1 = [{
+                label: "客户(企业)",
+                value: res.data.enterprisename_customer
+            }, {
+                label: "联系人",
+                value: res.data.name
+            }, {
+                label: "联系人角色",
+                value: res.data.contactsrole
+            }, {
+                label: "联系方式",
+                value: res.data.phonenumber
+            }, {
+                label: "微信",
+                value: res.data.wechatnum
+            }, {
+                label: "省市县",
+                value: res.data.province ? res.data.province + res.data.city + res.data.county : ''
+            }, {
+                label: "地址",
+                value: res.data.address
+            }, {
+                label: "项目名称",
+                value: res.data.projectname
+            }, {
+                label: "项目规模",
+                value: res.data.scale ? res.data.scale + res.data.unitname : ""
+            }, {
+                label: "总投资额(万元)",
+                value: res.data.totalinvestment
+            }, {
+                label: "造价(万元)",
+                value: res.data.costofconstruction
+            }, {
+                label: "预计开工时间",
+                value: res.data.begdate_due
+            }, {
+                label: "预计完工时间",
+                value: res.data.enddate_due
+            }, {
+                label: "市场活动",
+                value: res.data.campaign_name
+            }, {
+                label: "领域",
+                value: res.data.tradefield
+            }, {
+                label: "设计院",
+                value: res.data.institute
+            }, {
+                label: "设计师",
+                value: res.data.designer
+            }, {
+                label: "关联项目",
+                value: res.data.projectname1
+            }, {
+                label: "来源",
+                value: res.data.cluesource
+            }, {
+                label: "线索概况",
+                value: res.data.notes
+            }, {
+                label: '所属业务员',
+                value: res.data.salename
+            }, {
+                label: '负责人',
+                value: res.data.leader && res.data.leader.length > 0 ? res.data.leader[0].name : ''
+            }, {
+                label: '上图员',
+                value: res.data.uppictured
+            }, {
+                label: '分配状态',
+                value: res.data.allocationstatus
+            }, {
+                label: '跟进状态',
+                value: res.data.status
+            }];
+            if (wx.getStorageSync('userMsg').siteid == 'HY') list1 = list1.filter(v => !["项目预算(万元)", "总投资额(万元)", "造价(万元)"].includes(v.label))
             this.setData({
                 isLeader: res.data.createuserid == wx.getStorageSync('userMsg').userid,
                 detail: res.data,
@@ -89,82 +200,7 @@ Page({
                         value: res.data.followcount || '0'
                     }
                 ],
-                list1: [{
-                    label: "客户(企业)",
-                    value: res.data.enterprisename_customer
-                }, {
-                    label: "联系人",
-                    value: res.data.name
-                }, {
-                    label: "联系人角色",
-                    value: res.data.contactsrole
-                }, {
-                    label: "联系方式",
-                    value: res.data.phonenumber
-                }, {
-                    label: "微信",
-                    value: res.data.wechatnum
-                }, {
-                    label: "省市县",
-                    value: res.data.province ? res.data.province + res.data.city + res.data.county : ''
-                }, {
-                    label: "地址",
-                    value: res.data.address
-                }, {
-                    label: "项目名称",
-                    value: res.data.projectname
-                }, {
-                    label: "项目规模",
-                    value: res.data.scale ? res.data.scale + res.data.unitname : ""
-                }, {
-                    label: "总投资额(万元)",
-                    value: res.data.totalinvestment
-                }, {
-                    label: "造价(万元)",
-                    value: res.data.costofconstruction
-                }, {
-                    label: "预计开工时间",
-                    value: res.data.begdate_due
-                }, {
-                    label: "预计完工时间",
-                    value: res.data.enddate_due
-                }, {
-                    label: "市场活动",
-                    value: res.data.campaign_name
-                }, {
-                    label: "领域",
-                    value: res.data.tradefield
-                }, {
-                    label: "设计院",
-                    value: res.data.institute
-                }, {
-                    label: "设计师",
-                    value: res.data.designer
-                }, {
-                    label: "关联项目",
-                    value: res.data.projectname1
-                }, {
-                    label: "来源",
-                    value: res.data.cluesource
-                }, {
-                    label: "线索概况",
-                    value: res.data.notes
-                }, {
-                    label: '所属业务员',
-                    value: res.data.salename
-                }, {
-                    label: '负责人',
-                    value: res.data.leader && res.data.leader.length > 0 ? res.data.leader[0].name : ''
-                }, {
-                    label: '上图员',
-                    value: res.data.uppictured
-                }, {
-                    label: '分配状态',
-                    value: res.data.allocationstatus
-                }, {
-                    label: '跟进状态',
-                    value: res.data.status
-                }],
+                list1,
                 list2: [{
                     label: "创建人",
                     value: res.data.createBy
@@ -216,35 +252,40 @@ Page({
     },
     setTabbarList(status) {
         let tabbarList = [];
+        let detail = this.data.detail;
         if (this.data.isAdmin) {
-            if (this.data.detail.isprivate == 0) {
-                if (this.data.detail.allocationstatus == '待分配') {
+            if (this.data.detail.isprivate == 0 && this.data.detail.projectname1 == "") {
+                if (this.data.detail.allocationstatus == '待分配' && status != '已过期') {
                     tabbarList.push({
                         icon: "icon-zhuanyi",
                         label: "分配"
                     })
                 } else {
-                    tabbarList.push({
+                    if (status != '已转化' && status != '已无效') tabbarList.push({
                         icon: "icon-a-baobeibohuituihui",
                         label: "撤回"
                     })
                 }
             }
-            tabbarList.push({
+            if (detail.allocationstatus == '待分配') tabbarList.push({
                 icon: "icon-dibu-jieshu",
                 label: "删除"
             })
         }
-        if (status == '待跟进') tabbarList.unshift({
+        if (detail.allocationstatus == '待分配' || detail.leader.some(v => v.userid == wx.getStorageSync('userMsg').userid) && status != '已过期') tabbarList.unshift({
             icon: "icon-bianji",
             label: "编辑"
         })
-
-        if (status == '已过期' && this.data.detail.isprivate == 0 && wx.getStorageSync('auth').worderclue_admin.options.some(v => v == "recover")) tabbarList.unshift({
+        if (detail.leader.some(v => v.userid == wx.getStorageSync('userMsg').userid)) {
+            if (detail.allocationstatus == '已分配') tabbarList.push({
+                icon: "icon-shanchu",
+                label: "作废"
+            })
+        }
+        if (status == '已过期' && detail.isprivate == 0 && wx.getStorageSync('auth').worderclue_admin.options.some(v => v == "recover")) tabbarList.unshift({
             icon: "icon-dibu-chehui",
             label: "恢复"
         })
-
         if (wx.getStorageSync('auth').worderclue_public.options.some(v => v == "shiftSite")) {
             tabbarList.unshift({
                 icon: "icon-CRM",
@@ -338,6 +379,11 @@ Page({
                     url: `/packageA/publicClue/distribution?data=${JSON.stringify(data)}`,
                 })
                 break;
+            case "作废":
+                that.setData({
+                    deletereasonShow: true
+                })
+                break;
             case "恢复":
                 wx.showModal({
                     title: '提示',

+ 2 - 1
packageA/saleAdmin/detail.json

@@ -7,7 +7,8 @@
         "Follow": "/packageA/publicClue/modules/follow/follow",
         "Work": "/packageA/public/work/index",
         "ShiftSite": "/packageA/publicClue/modules/shiftSite/index",
-        "Clue": "../saleClue/modules/clue/index"
+        "Clue": "../saleClue/modules/clue/index",
+        "van-dialog": "@vant/weapp/dialog/index"
     },
     "navigationBarTitleText": "线索详情"
 }

+ 11 - 0
packageA/saleAdmin/detail.scss

@@ -12,4 +12,15 @@
         color: #333333;
         margin-bottom: 16rpx;
     }
+}
+
+.textarea {
+  width: 90%;
+  height: 200rpx;
+  box-sizing: border-box;
+  padding: 20rpx 30rpx;
+  background-color: #FDF9FC;
+  margin: 20rpx auto;
+  border: 1rpx solid #EEECEF;
+  border-radius: 8rpx;
 }

+ 16 - 12
packageA/saleAdmin/detail.wxml

@@ -1,25 +1,29 @@
 <view class="header">
-    <view class="title">{{detail.enterprisename_customer}}</view>
-    <Yl-tags id="Tags" add ownertable='sat_orderclue' ownerid='{{detail.sat_orderclueid}}' />
+  <view class="title">{{detail.enterprisename_customer}}</view>
+  <Yl-tags id="Tags" add ownertable='sat_orderclue' ownerid='{{detail.sat_orderclueid}}' />
 </view>
 <!-- 简介 -->
 <Yl_Detail list="{{briefs}}">
-    <Yl-group wx:if="{{detail.allocationstatus == '已分配'}}" slot='bottom' id='Group' add ownertable='sat_orderclue' ownerid='{{sat_orderclueid}}' />
+  <Yl-group wx:if="{{detail.allocationstatus == '已分配'}}" slot='bottom' id='Group' add ownertable='sat_orderclue' ownerid='{{sat_orderclueid}}' />
 </Yl_Detail>
 <view style="height: 20rpx;" />
 <Yl_FunTabs list='{{tabsList}}' active='{{tabsActive}}' bind:onChenge="tabsChange">
-    <Preview slot='详细信息' list1='{{list1}}' list2='{{list2}}' />
-    <Follow slot='跟进记录' id='follow' />
-    <Clue slot='来源线索' id='Clue' />
-    <Files slot="附件" id="Files" ownertable="sat_orderclue" ownerid="{{detail.sat_orderclueid}}" />
-    <Trace slot='跟进动态' id='Trace' ownertable='sat_orderclue' ownerid='{{detail.sat_orderclueid}}' />
-    <Work slot='任务' id='Work' ownertable='sat_orderclue' ownerid='{{detail.sat_orderclueid}}' disabled="{{isAdmin||isLeader}}" />
-    <Record slot='操作' id="Record" ownertable='sat_orderclue' ownerid='{{detail.sat_orderclueid}}' />
-    <view style="height: 140rpx;" />
+  <Preview slot='详细信息' list1='{{list1}}' list2='{{list2}}' />
+  <Follow slot='跟进记录' id='follow' />
+  <Clue slot='来源线索' id='Clue' />
+  <Files slot="附件" id="Files" ownertable="sat_orderclue" ownerid="{{detail.sat_orderclueid}}" />
+  <Trace slot='跟进动态' id='Trace' ownertable='sat_orderclue' ownerid='{{detail.sat_orderclueid}}' />
+  <Work slot='任务' id='Work' ownertable='sat_orderclue' ownerid='{{detail.sat_orderclueid}}' disabled="{{isAdmin||isLeader}}" />
+  <Record slot='操作' id="Record" ownertable='sat_orderclue' ownerid='{{detail.sat_orderclueid}}' />
+  <view style="height: 140rpx;" />
 </Yl_FunTabs>
 
 <!-- 底部 -->
 <Yl_Tabbar wx:if="{{tabbarList.length}}" list='{{tabbarList}}' bind:callback="tabbarOnClick" />
 
 <!-- 转站点 -->
-<ShiftSite id='ShiftSite' sat_orderclueid='{{sat_orderclueid}}' wx:if="{{siteShow}}" />
+<ShiftSite id='ShiftSite' sat_orderclueid='{{sat_orderclueid}}' wx:if="{{siteShow}}" />
+
+<van-dialog use-slot title="作废情况说明" show="{{ deletereasonShow }}" show-cancel-button confirm-button-color='#3874F6' bind:confirm='deleteItem' bind:cancel='onCancel'>
+  <textarea placeholder="情况说明" value="{{deletereason}}" data-name="deletereason" bindinput="areaInput" class="textarea" />
+</van-dialog>

+ 69 - 6
packageA/saleAdmin/insert.js

@@ -1,9 +1,9 @@
 const _Http = getApp().globalData.http,
     getTime = require("../../utils/getTime");
-let isuppictured = null,
-    sat_orderclueid = 0;
+let sat_orderclueid = 0;
 Page({
     data: {
+        isuppictured: null,
         loading: false,
         showAll: false,
         form: [{
@@ -274,7 +274,9 @@ Page({
                 placeholder: "选择关联项目",
                 valueName: "sa_projectid",
                 checking: "base",
-                required: false
+                required: false,
+                interrupt: true,
+                slot: "empty",
             }, {
                 label: "来源",
                 error: false,
@@ -300,7 +302,21 @@ Page({
         content: {},
         disabled: true
     },
+    clearProject() {
+        console.log("清除管理项目")
+        let that = this;
+        wx.showModal({
+            title: '提示',
+            content: '是否确定取消关联项目',
+            complete: (res) => {
+                if (res.confirm) that.setData({
+                    "form[19].value": ""
+                })
+            }
+        })
+    },
     onLoad(options) {
+        if (wx.getStorageSync('userMsg').siteid == 'HY') this.setHY();
         if (options.sat_orderclueid) sat_orderclueid = this.data.content.sat_orderclueid;
         if (options.rowData) {
             let data = JSON.parse(options.rowData);
@@ -334,7 +350,9 @@ Page({
                 'content.sa_customersid': data.sa_customersid || 0
             })
             if (data.sat_orderclueid) sat_orderclueid = data.sat_orderclueid;
-            this.selectComponent("#Form").confirm();
+            setTimeout(() => {
+                this.selectComponent("#Form").confirm();
+            }, 100)
         } else {
             this.getUnitname();
         }
@@ -368,17 +386,62 @@ Page({
                 title: res.msg,
                 icon: "none"
             })
-            isuppictured = res.data.isuppictured == 1 ? res.data.name : null;
+            this.data.isuppictured = res.data.isuppictured == 1 ? res.data.name : null;
+            if (res.data.isuppictured == 0) this.setData({
+                "form[0].disabled": true,
+            })
         });
         console.log("sat_orderclueid", sat_orderclueid)
     },
+    setHY() {
+        let remove = ["项目预算(万元)", "总投资额(万元)", "造价(万元)"];
+        this.setData({
+            form: this.data.form.filter(v => !remove.includes(v.label))
+        })
+    },
     async interrupt(e) {
         let {
             data,
             form,
             temporary
         } = e.detail;
+        let that = this;
         switch (temporary.item.label) {
+            case "关联项目":
+                function setProject() {
+                    form[temporary.index].value = data.value;
+                    form.find(v => v.label == '项目名称').value = data.value[0];
+                    that.setData({
+                        form
+                    })
+                    wx.navigateBack()
+                }
+                _Http.basic({
+                    "id": 20230812100204,
+                    "content": {
+                        sat_orderclueid,
+                        "sa_projectid": data.item.sa_projectid
+                    }
+                }).then(res => {
+                    console.log("查询项目有无绑定线索", res)
+                    if (res.msg != '成功') return wx.showToast({
+                        title: res.msg,
+                        icon: "none"
+                    })
+                    if (res.data == 1) {
+                        wx.showModal({
+                            title: '提示',
+                            content: '该项目已有关联线索,是否取消关联原线索',
+                            confirmText: "取消关联",
+                            complete: (res) => {
+                                if (res.confirm) setProject();
+                            }
+                        })
+                    } else {
+                        setProject();
+                    }
+                })
+                break;
             case "是否上图":
                 let valueNameList = ["enterprisename", "name", "projectname", "scale", "sys_enterpriseid", "contactsid", "uppictured"];
                 form.forEach((v, i) => {
@@ -390,7 +453,7 @@ Page({
                         error: false,
                         errMsg: "",
                         type: "text",
-                        value: isuppictured || '',
+                        value: this.data.isuppictured || '',
                         placeholder: "暂无",
                         valueName: "sty",
                         checking: "base",

+ 5 - 4
packageA/saleAdmin/insert.wxml

@@ -1,10 +1,11 @@
 <Yl_Headline title='基本信息' type='switch' switchLabel='仅显示必填信息' switch='{{showAll}}' bind:callBack='onChange' />
 <Yl_field id='Form' form='{{form}}' showAll='{{!showAll}}' bind:onConfirm='onConfirm' bind:interrupt="interrupt">
-    <view slot='info'>
-        <information id="Info" catch:queryClient='queryClient' catch:callback='introduce' />
-    </view>
+  <view slot='info'>
+    <information id="Info" catch:queryClient='queryClient' catch:callback='introduce' />
+  </view>
+  <view slot='empty' wx:if="{{form[19].value}}"><view class="iconfont icon-quxiao" style="color: #666;padding: 0 6rpx;" catchtap="clearProject" /></view>
 </Yl_field>
 <view style="height: 100rpx;" />
 <view class="new-footer">
-    <van-button custom-class='new-submit' disabled='{{disabled||loading}}' loading='{{loading}}' bindclick='submit'>提交</van-button>
+  <van-button custom-class='new-submit' disabled='{{disabled||loading}}' loading='{{loading}}' bindclick='submit'>提交</van-button>
 </view>

+ 7 - 0
packageA/saleClue/addClue.js

@@ -205,6 +205,7 @@ Page({
         disabled: true
     },
     onLoad(options) {
+        if (wx.getStorageSync('userMsg').siteid == 'HY') this.setHY();
         if (options.sat_orderclueid) this.data.content.sat_orderclueid = options.sat_orderclueid;
         if (options.rowData) {
             let data = JSON.parse(options.rowData);
@@ -251,6 +252,12 @@ Page({
             })
         })
     },
+    setHY() {
+        let remove = ["项目预算(万元)", "总投资额(万元)", "造价(万元)"];
+        this.setData({
+            form: this.data.form.filter(v => !remove.includes(v.label))
+        })
+    },
     getUnitname() {
         _Http.basic({
             "classname": "sysmanage.develop.optiontype.optiontype",

+ 11 - 0
packageA/saleClue/change.js

@@ -208,6 +208,7 @@ Page({
         disabled: true
     },
     onLoad(options) {
+        if (wx.getStorageSync('userMsg').siteid == 'HY') this.setHY();
         let data = JSON.parse(options.rowData);
         data.sa_brandid = ""
         this.setData({
@@ -247,6 +248,16 @@ Page({
             })
         })
     },
+    setHY() {
+        let required = ["预计签约时间", "项目等级", "详细地址", "项目规模"],
+            remove = ["项目预算(万元)", "总投资额(万元)", "造价(万元)"];
+        this.setData({
+            form: this.data.form.filter(v => !remove.includes(v.label)).map(v => {
+                if (required.includes(v.label)) v.required = true;
+                return v
+            })
+        })
+    },
     submit() {
         let content = {
             ...this.data.content,

+ 77 - 73
packageA/saleClue/detail.js

@@ -71,6 +71,82 @@ Page({
                 title: res.data,
                 icon: "none"
             });
+
+            let list1 = [{
+                label: "客户(企业)",
+                value: res.data.enterprisename_customer
+            }, {
+                label: "联系人",
+                value: res.data.name
+            }, {
+                label: "联系角色",
+                value: res.data.contactsrole
+            }, {
+                label: "手机号码",
+                value: res.data.phonenumber
+            }, {
+                label: "微信",
+                value: res.data.wechatnum
+            }, {
+                label: "省市县",
+                value: res.data.province ? res.data.province + res.data.city + res.data.county : ''
+            }, {
+                label: "地址",
+                value: res.data.address
+            }, {
+                label: "项目名称",
+                value: res.data.projectname
+            }, {
+                label: "项目规模",
+                value: res.data.scale ? res.data.scale + res.data.unitname : ""
+            }, {
+                label: "总投资额(万元)",
+                value: CNY(res.data.totalinvestment)
+            }, {
+                label: "造价(万元)",
+                value: CNY(res.data.costofconstruction)
+            }, {
+                label: "预计开工时间",
+                value: res.data.begdate_due
+            }, {
+                label: "预计完工时间",
+                value: res.data.enddate_due
+            }, {
+                label: "市场活动",
+                value: res.data.campaign_name
+            }, {
+                label: "领域",
+                value: res.data.tradefield
+            }, {
+                label: "设计院",
+                value: res.data.institute
+            }, {
+                label: "设计师",
+                value: res.data.designer
+            }, {
+                label: "关联项目",
+                value: res.data.projectname1
+            }, {
+                label: "来源",
+                value: res.data.cluesource
+            }, {
+                label: "线索概况",
+                value: res.data.notes
+            }, {
+                label: '负责人',
+                value: res.data.leader && res.data.leader.length > 0 ? res.data.leader[0].name : ''
+            }, {
+                label: '上图员',
+                value: res.data.uppictured
+            }, {
+                label: '分配状态',
+                value: res.data.allocationstatus
+            }, {
+                label: '跟进状态',
+                value: res.data.status
+            }];
+            if (wx.getStorageSync('userMsg').siteid == 'HY') list1 = list1.filter(v => !["项目预算(万元)", "总投资额(万元)", "造价(万元)"].includes(v.label))
+
             this.setData({
                 loading: false,
                 detail: res.data,
@@ -103,79 +179,7 @@ Page({
                         value: res.data.followcount || '0'
                     },
                 ],
-                list1: [{
-                    label: "客户(企业)",
-                    value: res.data.enterprisename_customer
-                }, {
-                    label: "联系人",
-                    value: res.data.name
-                }, {
-                    label: "联系角色",
-                    value: res.data.contactsrole
-                }, {
-                    label: "手机号码",
-                    value: res.data.phonenumber
-                }, {
-                    label: "微信",
-                    value: res.data.wechatnum
-                }, {
-                    label: "省市县",
-                    value: res.data.province ? res.data.province + res.data.city + res.data.county : ''
-                }, {
-                    label: "地址",
-                    value: res.data.address
-                }, {
-                    label: "项目名称",
-                    value: res.data.projectname
-                }, {
-                    label: "项目规模",
-                    value: res.data.scale ? res.data.scale + res.data.unitname : ""
-                }, {
-                    label: "总投资额(万元)",
-                    value: CNY(res.data.totalinvestment)
-                }, {
-                    label: "造价(万元)",
-                    value: CNY(res.data.costofconstruction)
-                }, {
-                    label: "预计开工时间",
-                    value: res.data.begdate_due
-                }, {
-                    label: "预计完工时间",
-                    value: res.data.enddate_due
-                }, {
-                    label: "市场活动",
-                    value: res.data.campaign_name
-                }, {
-                    label: "领域",
-                    value: res.data.tradefield
-                }, {
-                    label: "设计院",
-                    value: res.data.institute
-                }, {
-                    label: "设计师",
-                    value: res.data.designer
-                }, {
-                    label: "关联项目",
-                    value: res.data.projectname1
-                }, {
-                    label: "来源",
-                    value: res.data.cluesource
-                }, {
-                    label: "线索概况",
-                    value: res.data.notes
-                }, {
-                    label: '负责人',
-                    value: res.data.leader && res.data.leader.length > 0 ? res.data.leader[0].name : ''
-                }, {
-                    label: '上图员',
-                    value: res.data.uppictured
-                }, {
-                    label: '分配状态',
-                    value: res.data.allocationstatus
-                }, {
-                    label: '跟进状态',
-                    value: res.data.status
-                }],
+                list1,
                 list2: [{
                     label: "创建人",
                     value: res.data.createBy