123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- <template>
- <view>
- <form>
- <view class="cu-form-group" v-if="item.readable" :class="index===0?'margin-top':''" v-for="(item,index) in formData" :key="index">
- <view class="title">
- <text class="red-color " v-if="item.options.required">* </text> {{item.name}}
- </view>
- <template v-if="item.type=='input'">
- <!-- 普通输入框 -->
- <input :placeholder='item.placeholder' :disabled="!item.writable" v-model="item.value"></input>
- </template>
- <template v-if="item.type=='textarea' || item.type=='editor'">
- <!-- 多行文本输入框 -->
- <textarea maxlength="-1" :placeholder='item.placeholder' :disabled="!item.writable" v-model="item.value"></textarea>
- </template>
- <template v-if="item.type=='number'">
- <!-- 普通输入框 -->
- <input type="number" :placeholder='item.placeholder' :disabled="!item.writable" v-model="item.value"></input>
- </template>
- <template v-if="item.type=='radio'">
- <!-- 单选框 -->
-
- <jp-radio-group v-if="item.options.remote === 3" v-model="item.value">
- <label v-for="(option, index) in $dictUtils.getDictList(item.options.dictType)">
- <view>
- {{option.label}}
- <radio class='blue radio' :disabled="!item.writable" :value="option.value" :class="item.value==option.value?'checked':''" :checked="item.value==option.value?true:false" ></radio>
- </view>
- </label>
- </jp-radio-group>
- <jp-radio-group v-else-if="item.options.showLabel" v-model="item.value">
- <label v-for="(option, index) in item.options.options">
- <view>
- {{option.label}}
- <radio class='blue radio' :disabled="!item.writable" :value="option.value" :class="item.value==option.value?'checked':''" :checked="item.value==option.value?true:false" ></radio>
- </view>
- </label>
- </jp-radio-group>
- <jp-radio-group v-else v-model="item.value">
- <label v-for="(option, index) in item.options.options">
- <view>
- {{option.value}}
- <radio class='blue radio' :disabled="!item.writable" :value="option.value" :checked="item.value==option.value?true:false" ></radio>
- </view>
- </label>
- </jp-radio-group>
- </template>
- <template v-if="item.type=='checkbox'">
- <jp-checkbox-group v-if="item.options.remote === 3" v-model="item.value">
- <label v-for="(option, index) in $dictUtils.getDictList(item.options.dictType)">
- <view>
- {{option.label || option.value}}
- <checkbox :disabled="!item.writable" class="blue" :value="option.value" :class="(','+item.value+',').indexOf(','+option.value+',')>=0?'checked':''" :checked="(','+item.value+',').indexOf(','+option.value+',')>=0" ></checkbox>
- </view>
- </label>
- </jp-checkbox-group>
-
- <jp-checkbox-group v-else-if="item.options.showLabel" v-model="item.value">
- <label v-for="(option, index) in item.options.options">
- <view>
- {{option.label}}
- <checkbox :disabled="!item.writable" class="blue" :value="option.value" :class="(','+item.value+',').indexOf(','+option.value+',')>=0?'checked':''" :checked="(','+item.value+',').indexOf(','+option.value+',')>=0" ></checkbox>
- </view>
- </label>
- </jp-checkbox-group>
- <jp-checkbox-group v-else v-model="item.value">
- <label v-for="(option, index) in item.options.options">
- <view>
- {{option.value}}
- <checkbox class="blue" :disabled="!item.writable" :value="option.value" :class="(','+item.value+',').indexOf(','+option.value+',')>=0?'checked':''" :checked="(','+item.value+',').indexOf(','+option.value+',')>=0" ></checkbox>
- </view>
- </label>
- </jp-checkbox-group>
- </template>
- <template v-if="item.type=='time'">
- <!-- 时间控件 -->
- <jp-datetime-picker v-model="item.value" :placeholder='item.placeholder' :disabled="!item.writable" mode="time"></jp-datetime-picker>
- </template>
- <template v-if="item.type=='date'">
- <!-- 日期控件 -->
- <jp-datetime-picker v-model="item.value" :placeholder='item.placeholder' :disabled="!item.writable" mode="date"></jp-datetime-picker>
- </template>
- <template v-if="item.type=='rate'">
- <!-- 评分 -->
- <uni-rate :size="18":disabled="!item.writable" :allowHalf="item.options.allowHalf" v-model="item.value" :max="item.options.max"/>
- </template>
- <template v-if="item.type=='color'">
- <!-- 颜色选择框 -->
- <jp-color-picker :disabled="!item.writable" v-model="item.value" ></jp-color-picker>
- </template>
- <template v-if="item.type=='select'">
- <!-- 选择框 -->
- <jp-picker :disabled="!item.writable" v-if="item.options.remote === 3" v-model="item.value" :range="$dictUtils.getDictList(item.options.dictType)">
- </jp-picker>
- <jp-picker :disabled="!item.writable" v-else-if="item.options.showLabel" v-model="item.value" :range="item.options.options">
- </jp-picker>
- <jp-picker :disabled="!item.writable" v-else v-model="item.value" rangeKey="value" :range="item.options.options">
- </jp-picker>
- </template>
- <template v-if="item.type=='switch'">
- <!-- 开关 -->
- <jp-switch :placeholder='item.placeholder' :disabled="!item.writable" v-model="item.value"></jp-switch>
- </template>
- <template v-if="item.type=='slider'">
- <!-- 滑块 -->
- <jp-slider :placeholder='item.placeholder' :disabled="!item.writable" v-model="item.value"></jp-slider>
- </template>
- <template v-if="item.type=='text'">
- <!-- 普通输入框 -->
- <text>{{item.value}}</text>
- </template>
- <template v-if="item.type=='html'">
- <!-- 普通输入框 -->
- <view v-html="item.value"></view>
- </template>
- <template v-if="item.type=='imgupload' || item.type=='fileupload'">
- <!-- 图片上传 -->
- <jp-image-upload :disabled="!item.writable" v-model="item.value"></jp-image-upload>
- </template>
- <template v-if="item.type=='user'">
- <!-- 用户选择框 -->
- <user-select :disabled="!item.writable" v-model="item.value"></user-select>
- </template>
- <template v-if="item.type=='office'">
- <!-- 机构选择框 -->
- <jp-office-select :disabled="!item.writable" v-model="item.value"></jp-office-select>
- </template>
- <template v-if="item.type=='area'">
- <!-- 普通输入框 -->
- <jp-area-select :disabled="!item.writable" v-model="item.value"></jp-area-select>
- </template>
- <template v-if="item.type=='dict'">
- <!-- 字典 -->
- <jp-picker :disabled="!item.writable" v-model="item.value" :range="$dictUtils.getDictList(item.options.dictType)"></jp-picker>
- </template>
- </view>
- </form>
- </view>
- </template>
- <script>
- export default {
- name: 'activeForm',
-
- watch:{
- formData:{
- handler (val) {
- console.log(this.formData)
- },
- immediate: true,
- deep: false
- }
- },
- props: {
- formData:{
- type:Array,
- default:function(){
- return []
- }
- }
- },
- methods: {
- }
- }
- </script>
- <style lang="scss">
- .uni-list-cell {
- justify-content: flex-start
- }
- .cu-form-group{
- uni-checkbox-group{
- text-align: right;
- }
- uni-radio-group {
- text-align: right;
- }
- uni-checkbox, uni-radio {
- position: relative;
- margin-top: 7px;
- margin-left:7px;
- margin-bottom: 7px;
- }
- }
- </style>
|